#ifndef __DANAMIC_ARRAY_H__
#define __DANAMIC_ARRAY_H__

#define ELEMENT_TYPE void*




struct DynamicArray
{
    ELEMENT_TYPE *data;
    int m_size;     // 元素个数
    int m_capacity; // 数组容量
};

typedef struct DynamicArray DynamicArray; // 取别名

/*动态数组初始化 */
int dynamicArrayInit(DynamicArray *array, int capacity);

/*动态数组插入元素(默认插到数组的末尾)*/
int dynamicArrayInsert(DynamicArray *array, ELEMENT_TYPE data);

/*动态数组指定位置插入元素 */
int dynamicArrayAppointPosInsert(DynamicArray *array, int pos, ELEMENT_TYPE data);

/*遍历动态数组的元素 */
int travelArrayElement(DynamicArray *array,void(*printFunc)(ELEMENT_TYPE arg));

/*删除数组的元素(默认删除数组末尾)*/
int dynamicArrayDelete(DynamicArray *array);

/*动态数组删除指定位置元素 */
int dynamicArrayAppointPosDelete(DynamicArray *array, int pos);

/*动态数组删除指定的值 */
int dynamicArrayAppointDataDelete(DynamicArray *array, ELEMENT_TYPE data);

/*动态数组的销毁*/
int dynamicArrayDestroy(DynamicArray *array);

#endif //__DANAMIC_ARRAY_H__